#include "Blockqueue.hpp"
#include <pthread.h>
#include <cstdio>
using namespace std;
void* CustCAll(void* arg)
{
    Blockqueue<int>* q=(Blockqueue<int>*)arg;
    while(true)
    {
        int data=-1;
        q->pop(data);
        cout<<"Custmer :"<<data<<endl;
    }
    return nullptr;
}
void* ProdCAll(void* arg)
{

    Blockqueue<int>* q=(Blockqueue<int>*)arg;
    while(true)
    {
        int p=0;
        q->push(p);
        cout<<"Prod :"<<p<<endl;
    }
}
int main()
{
    Blockqueue<int> bq;
    //模拟单生产者-消费者模型
    //初始化一个生产者与消费者线程，以及各自的回调函数
    pthread_t customer;
    pthread_t producter;
    pthread_create(&customer,nullptr,CustCAll,(void*)(&bq));
    pthread_create(&producter,nullptr,ProdCAll,(void*)(&bq));
    pthread_join(customer,nullptr);
    pthread_join(producter,nullptr);
    return 0;
}
